Automated management of database schemas

ABSTRACT

Some embodiments provide a non-transitory machine-readable medium that stores a program. The program queries a set of databases to identify a first set of database schemas. Each database schema in the first set of database schemas is configured for a database in the set of databases. The program further queries an inventory data storage for a second set of database schemas. The program also compares the first set of database schemas and the second set of database schemas. Based on the comparison, the program further determines whether to deactivate database schemas in the set of databases.

BACKGROUND

In many software development environments, software developers as wellas quality assurance engineers can use a number of different databaseschemas to develop and test software applications. Sometimes, errorsthat occur in a database schema during development or testing ofsoftware applications are not readily available to software developersand quality assurance engineers. For instance, any errors that may occurcan be stored in an error log in a database schema. Similarly, ifupgrades or migration operations are performed on a database schema, anyerrors that can occur during such operations are not readily availableto software developers and quality assurance engineers as these errorscan be logged and stored in the database schema.

SUMMARY

In some embodiments, a non-transitory machine-readable medium stores aprogram executable by at least one processing unit of a device. Theprogram queries a set of databases to identify a first set of databaseschemas. Each database schema in the first set of database schemas isconfigured for a database in the set of databases. The program furtherqueries an inventory data storage for a second set of database schemas.The program also compares the first set of database schemas and thesecond set of database schemas. Based on the comparison, the programfurther determines whether to deactivate database schemas in the set ofdatabases.

In some embodiments, determining whether to deactivate database schemasin the set of databases may include, for each database schema in thefirst set of database schemas that is not included in the second set ofdatabase schemas, adding the database schema to the second set ofdatabase schemas stored in the inventory data storage and preventingaccess to the database schema. Querying the set of databases may includequerying each database in the set of databases; for each database in theset of databases, generating a list of errors, each error in the list oferrors associated with a database schema configured for the database;merging the lists of errors into a single list of errors; and using thesingle list of errors as the first set of database schemas.

In some embodiments, the program may further reactivate each databaseschema in the second set of database schemas that is not included in thefirst set of database schemas. The program may further receive a requestto create a database schema in a database in the set of databases,wherein the request includes a data source for the database schema; inresponse to the request, create the database schemas in the database;and copy data from the data source into the database schema. Eachdatabase in the set of databases may include a set of tables. A databaseschema configured for a database in the set of databases may include asubset of the set of tables and specify the relationships among thesubset of the set of tables. Each database schema in the first set ofdatabase schemas may have at least one error stored in a table includedin the database schema.

In some embodiments, a method queries a set of databases to identify afirst set of database schemas. Each database schema in the first set ofdatabase schemas is configured for a database in the set of databases.The method further queries an inventory data storage for a second set ofdatabase schemas. The method also compares the first set of databaseschemas and the second set of database schemas. Based on the comparison,the method further determines whether to deactivate database schemas inthe set of databases.

In some embodiments, determining whether to deactivate database schemasin the set of databases may include, for each database schema in thefirst set of database schemas that is not included in the second set ofdatabase schemas, adding the database schema to the second set ofdatabase schemas stored in the inventory data storage and preventingaccess to the database schema. Querying the set of databases may includequerying each database in the set of databases; for each database in theset of databases, generating a list of errors, each error in the list oferrors associated with a database schema configured for the database;merging the lists of errors into a single list of errors; and using thesingle list of errors as the first set of database schemas.

In some embodiments, the method may further reactivate each databaseschema in the second set of database schemas that is not included in thefirst set of database schemas. The method may further receive a requestto create a database schema in a database in the set of databases,wherein the request includes a data source for the database schema; inresponse to the request, create the database schemas in the database;and copy data from the data source into the database schema. Eachdatabase in the set of databases may include a set of tables. A databaseschema configured for a database in the set of databases may include asubset of the set of tables and specify the relationships among thesubset of the set of tables. Each database schema in the first set ofdatabase schemas may have at least one error stored in a table includedin the database schema.

In some embodiments, a system includes a set of processing units and anon-transitory machine-readable medium that stores instructions. Theinstructions cause at least one processing unit to query a set ofdatabases to identify a first set of database schemas. Each databaseschema in the first set of database schemas is configured for a databasein the set of databases. The instructions further cause the at least oneprocessing unit to query an inventory data storage for a second set ofdatabase schemas. The instructions also cause the at least oneprocessing unit to compare the first set of database schemas and thesecond set of database schemas. Based on the comparison, theinstructions further cause the at least one processing unit to determinewhether to deactivate database schemas in the set of databases.

In some embodiments, determining whether to deactivate database schemasin the set of databases may include, for each database schema in thefirst set of database schemas that is not included in the second set ofdatabase schemas, adding the database schema to the second set ofdatabase schemas stored in the inventory data storage and preventingaccess to the database schema. Querying the set of databases may includequerying each database in the set of databases; for each database in theset of databases, generating a list of errors, each error in the list oferrors associated with a database schema configured for the database;merging the lists of errors into a single list of errors; and using thesingle list of errors as the first set of database schemas.

In some embodiments, the instructions may further cause the at least oneprocessing unit to reactivate each database schema in the second set ofdatabase schemas that is not included in the first set of databaseschemas. The instructions further cause the at least one processing unitto receive a request to create a database schema in a database in theset of databases, wherein the request includes a data source for thedatabase schema; in response to the request, create the database schemasin the database; and copy data from the data source into the databaseschema. Each database in the set of databases may include a set oftables. A database schema configured for a database in the set ofdatabases may include a subset of the set of tables and specifies therelationships among the subset of the set of tables.

The following detailed description and accompanying drawings provide abetter understanding of the nature and advantages of the presentinvention.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates a system for automatedly managing database schemasaccording to some embodiments.

FIG. 2 illustrates an example data flow through the system illustratedin FIG. 1 according to some embodiments.

FIG. 3 illustrates a process for automatedly managing database schemasaccording to some embodiments.

FIG. 4 illustrates an exemplary computer system, in which variousembodiments may be implemented.

FIG. 5 illustrates an exemplary computing device, in which variousembodiments may be implemented.

FIG. 6 illustrates an exemplary system, in which various embodiments maybe implemented.

DETAILED DESCRIPTION

In the following description, for purposes of explanation, numerousexamples and specific details are set forth in order to provide athorough understanding of the present invention. It will be evident,however, to one skilled in the art that the present invention as definedby the claims may include some or all of the features in these examplesalone or in combination with other features described below, and mayfurther include modifications and equivalents of the features andconcepts described herein.

Described herein are techniques for automatedly managing databaseschemas. In some embodiments, a computing system receives requests tocreate new database schemas in databases in a datacenter. To handle sucha request, the computing system creates a new database schema in adatabase and then stores information associated with the newly createddatabase instance in an inventory data storage. Periodically, thecomputing system queries the databases in the datacenter to identifydatabase schemas that have errors associated with them. The computingsystem adds identified database schemas to a list in the inventory datastorage of database schemas that have errors and that are not already inthe list and then deactivates these database schemas. For databaseschemas in the list that are not included in the identified databaseschemas, the computing system reactivates the database schema. In someembodiments, the computing system deletes database schemas that havebeen deactivated for a defined amount of time.

The computing system may send an owner of a database schema anotification requesting confirmation that the database schema is stillin use once a first defined amount of time has elapsed from the date thedatabase schema was created. If the computing system does not receive aconfirmation from the owner of the database schema, after a seconddefined amount of time has elapsed from the date of creation, thecomputing system deletes the database schema. If the computing systemdoes receive a confirmation from the owner of the database schema, thecomputing system can request confirmation from the owner of the databaseschema after the first defined amount of time has elapsed from the datethe computing system received the confirmation. The computing system cancontinually request confirmation from the owner of the database schemaand check for confirmation from the owner.

The techniques described in the present application provide a number ofbenefits and advantages over conventional methods for managing databaseschemas. For instance, by automatedly monitoring database schemas anddeleting database schemas that have been deactivated for a definedamount of time, unused or underutilized data in databases are reducedthereby improving performance of the database and usage of databaseresources. By automatedly monitoring database schemas, requestingconfirmation from owners of database schemas that they are still in use,and deleting database schemas have not been confirmed after a definedamount of time, the same or similar benefits and advantages can beachieved.

FIG. 1 illustrates a system 100 for automatedly managing databaseschemas according to some embodiments. As shown, system 100 includesclient device 105, computing system 110, inventor data storage 130, anddatacenter 135. Inventor data storage 130 is configured to storeinformation associated with database schemas configured for databases indatacenter 135. While FIG. 1 illustrates inventory data storage 130 asseparate from computing system 110, one of ordinary skill in the artwill appreciate that inventor data storage 130 can be part of computingsystem 110 in some embodiments.

Client device 105 is configured to communicate and interact withcomputing system 110. For example, a user of client device 105 may sendDB schema manager 125 (via a graphical user interface (GUI) provided byDB schemed manager 125) requests to create database schemas fordatabases in datacenter 135. In response, the user of client device 105may receive a notification once the database schema has been created andis ready to use. A user of client device 105 can receive a notificationfrom computing system 110 indicating that a database schemas owned bythe user has errors associated with it. In response, the user of theclient device 105 may fix issues causing the errors. As another example,a user of client device 105 may receive a notification from computingsystem 110 requesting confirmation that a database schemas owned by theuser is still in use. To continue using the database schema, the usercan send computing system 110 a confirmation indicating that thedatabase schema is still in use. Although FIG. 1 shows one clientdevice, one of ordinary skill in the art will realize that system 100can include additional client devices that are configured the same as orsimilar to client device 105.

As illustrated, computing system 110 includes data collector 115, datamerger 120, and database (DB) schema manager 125. While FIG. 1 showsdata collector 115, data merger 120, and database (DB) schema manager125 implemented on a single computing system, one of ordinary skill inthe art will understand that different components may be implemented onseparate computing systems. For example, data collector 115 and datamerger 120 can be implemented on one computing system while DB schemamanager 125 can be implemented on another computing system. As anotherexample, data collector 115, data merger 120, and database (DB) schemamanager 125 may each be implemented on separate computing systems.

Data collector 115 is responsible for collecting data associated withdatabase schemas configured for databases in datacenter 135. In someembodiments, data collector 115 includes a number of different databaseclients for interfacing with different types of databases 140 indatacenter 135. At a defined interval (e.g., once an hour, once a day,once a week, etc.), data collector 115 queries each database 140 indatacenter 135 using the appropriate database client. Specifically, datacollector 115 queries a database 140 to identify a list of errors whereeach error in the list of errors is associated with a database schemaconfigured for the database 140. In some embodiments, data collector 115queries a database 140 to identify such an error by querying a table ofthe database schema that stores a log of errors that occurred during theoperation of a database schema. Data collector 115 can store the errorsfrom a query of a database 140 in a text file. Data collector 115 maysend the text file to data merger 120.

Data merger 120 handles the merging of information. For instance, datamerger 120 may receive from data collector 115 a text file for eachquery performed on a database 140 in datacenter 135. Once data merger120 receives all the text files from data collector 115, data merger 120generates a single text file that includes all the database schemas indatacenter 135 that have errors associated with it. After generating thesingle text file, data merger 120 sends it to DB schema manager 125.

DB schema manager 125 is configured to manage the provisioning ofdatabase schemas in datacenter 135. For example, DB schema manager 125may receive from a user of client device 105 (e.g., via a GUI providedby DB schema manager 125) a request to create a database schema in adatabase 140. The request includes a data source for the database schemaand an owner of the database schema (e.g., the user of client device105). In response to such a request, DB schema manager 125 creates thedatabase schema in the database 140 and copies data from the specifieddata source into the database schema. DB schema manager 125 also storesinformation associated with the database schema in a table in inventorydata storage 130 (also referred to as a database schema table). In someembodiments, DB schema manager 125 performs the create and copyoperations via application programming interfaces (APIs) provided bycomputing devices used to implement DBs 140 a-n. Examples of informationassociated with a database schema can include the owner of the databaseschema, the data source of the database schema, the database 140 inwhich the database schema is created, the date the database schema iscreated, the status of the database schema, an expiration date ofdatabase schema, etc. The expiration date may be a defined amount oftime (e.g., two weeks, one month, three months, six months, etc.) afterthe date the database scheme is created. The database schema table ininventory data storage 130 is used to store information associated witheach and every database schema configured for databases 140 indatacenter 135. In some embodiments, DB schema manager 125 sets thestatus of the database schemas as active upon creating it. Aftercreating the database schema, it can be deployed (i.e., provisioned) foruse and the owner of the database schema can access it. As part of thedeployment of a database schema, upgrade and/or migration operations maybe performed on the database schema.

DB schema manager 125 also handles the deprovisioning (i.e.,deactivation) of database schemas. For instance, when DB schema manager125 receives from data merger 120 a list of errors, DB schema manager125 queries the database schema table in inventory data storage 130 forevery database schema that has an active status. Next, DB schema manager125 performs a first join operation between the database schemas havingan active status and the list of errors to determine a list ofindividual errors that are each associated with a database schema havingan active status. DB schema manager 125 adds each error in the list ofindividual errors to another table in inventory data storage 130 (alsoreferred to as an error table). The error table in inventory datastorage 130 is used to store information associated with errors thathave occurred to database schemas in databases 140 in datacenter 135.Examples of such information associated with an error include a name ofthe error, information associated with the error (e.g., a date on whichthe error occurred, etc.), a name of the database schema associated withthe error, information associated with the database schema (e.g., theowner of the database schema, the date the database schema was created,etc.), etc. In some embodiments, DB schema manager 125 does not adderrors to the error table in inventory data storage 130 that areduplicates.

DB schema manager 125 then performs a second join operation between thedatabase schemas having an active status and the list of errors todetermine a list of unique database schemas that each has at least oneerror associated with it. For each unique database schema in the list ofunique database schemas, DB schema manager 125 sends the owner of thedatabase schema a notification indicating that the database schema hasbeen deactivated along with a list of the errors associated with thedatabase schema that were added to the error table, sets the status ofthe database schema in the database schema table in inventory datastorage 130 to an inactive status, and then deactivates the databaseschema (e.g., prevents access to the database schema).

DB schema manager 125 also monitors active database schemas andprocesses them differently based on different conditions. For example,DB schema manager 125 may receive from an owner of an active databaseschema (e.g., a user of client device 105) a confirmation that thedatabase schema is still in use. In response to receiving theconfirmation, DB schema manager 125 updates the expiration date of thedatabase schema in the database schema table stored in inventory datastorage 130 by a defined amount of time (e.g., two weeks, one month,three months, six months, etc.) after the time at which DB schemamanager 125 received the confirmation. In some embodiments, DB schemamanager 125 periodically iterates through the active database schemas tocheck whether the expiration date of the database schema has elapsed. Ifso, DB schema manager 125 deletes the database schema from the database140 for which the database schema is configured and deletes the recordof the database schema from the database schema table in inventory datastorage 130.

In addition, DB schema manager 125 monitors deactivated database schemasand processes them differently based on different conditions. Forinstance, whenever DB schema manager 125 receives from data merger 120 alist of errors, DB schema manager 125 queries the database schema tablestored in inventory data storage 130 for deactivated database schemaswith an error date (i.e., the date on which the error occurred) thatfalls within a define range of time (e.g., seven to ten days, ten tofifteen days, twenty-one to twenty-eight days, etc.). Next, DB schemamanager 125 compares the list of errors and the deactivated databaseschemas with an error date that falls within the define range of time.If an error in the list of errors has a matching error and a matchingdeactivated database schema, DB schema manager 125 sends the owner ofthe deactivated database schema a notification reminding the owner tofix the error. For every deactivated database schema in the query resultthat does not have a matching error in the list of errors, DB schemamanager 125 reactivates the database schema.

Additionally, whenever DB schema manager 125 receives from data merger120 a list of errors, DB schema manager 125 queries the database schematable stored in inventory data storage 130 for deactivated databaseschemas with an error date (i.e., the date on which the error occurred)that falls after the define range of time. DB schema manager 125compares the list of errors and the deactivated database schemas with anerror date that falls after the define range of time. If an error in thelist of errors has a matching error and a matching deactivated databaseschema, DB schema manager 125 deletes the deactivated database schemafrom the database 140 for which the database scheme is configured andthen sends the owner of the deleted database schema a notificationindicating that the database schema has been deleted. In someembodiments, DB schema manager 125 performs the delete operation viaAPIs provided by computing devices used to implement DBs 140 a-n. Forevery deactivated database schema in the query result that does not havea matching error in the list of errors, DB schema manager 125reactivates the database schema.

As shown in FIG. 1, datacenter 135 includes database (DB) 140 a-n. DBs140 a-n can be implemented on a set of computing devices in datacenter135. In some embodiments, a DB 140 may be implemented as a databasecluster. Each DB 140 is configured to store a set of tables. As anexample, DB 140 a is illustrated as including a set of tables a-x. Also,each DB 140 may include a set of database schemas that are configuredfor the DB 140. In some embodiments, a database schema configured for aDB 140 includes a subset of the set of tables in the DB 140 andspecifies the relationships among the subset of the set of tables. Adatabase schema can include additional elements such as views,sequences, indexes, procedures, functions, packages, etc. As an example,DB 140 a is illustrated as including database schemas 1-k. As such, eachof the database schemas 1-k includes a subset of the set of tables a-x.

FIG. 2 illustrates an example data flow through system 100 according tosome embodiments. For this example data flow an error associated with adatabase schema indicates that execution of a script on the databaseschema failed. Information stored about such an error in the text filemay include a name of the script, information associated with the script(e.g., a file path of the script, a release version of the script, adate on which the script failed, etc.), a name of the database schema,information associated with the database schema (e.g., the owner of thedatabase schema, the date the database schema was created, etc.), etc.

The data flow begins by data collector 115 querying, at 205 each DB 140in datacenter 135 using an appropriate database client. In particular,data collector 115 queries each DB 140 to identify database schemashaving errors associated with them by querying a table of each databaseschema that stores a log of errors that occurred during the operation ofthe database schema. In this example, the errors include failures thatoccurred during the execution of scripts on the database schema. Uponreceiving, at 210, results of a query on a DB 140, data collector 115stores the results of the query in a text file and sends it to datamerger 120.

Upon receiving all the text files storing the results from the querieson DBs 140 a-n, data merger 120 generates a single text file thatincludes all the errors that occurred on database schemas in datacenter135. Next, data merger 120 sends the single text file to DB schemamanager 125. When DB schema manager 125 receives the single text file ofthe list of errors, DB schema manager 125 queries, at 215, the databaseschema table in inventory data storage 130 for every database schemathat has an active status. Once DB schema manager 125 receives, at 220,the results of the query, DB schema manager 125 performs a first joinoperation between the database schemas having an active status and thelist of errors to determine a list of individual errors that are eachassociated with a database schema having an active status. DB schemamanager 125 adds each error in the list of individual errors to theerror table in inventory data storage 130. As mentioned above, in someembodiments, DB schema manager 125 does not add errors to the errortable in inventory data storage 130 that are duplicates. For thisexample, DB schema manager 125 does not add a script having the samename, information associated with the script, a name of the databaseschema, information associated with the database schema, etc., as ascript already stored in the error table since that is a duplicateerror.

After DB schema manager 125 receives, at 220, the results of the query,DB schema manager 125 also performs a second join operation between thedatabase schemas having an active status and the list of errors todetermine a list of unique database schemas that each has at least oneerror associated with it. For each unique database schema in the list ofunique database schemas, DB schema manager 125 sends the owner of thedatabase schema a notification indicating that the database schema hasbeen deactivated along with a list of the errors associated with thedatabase schema, sets the status of the database schema in the databaseschema table in inventory data storage 130 to an inactive status, andthen deactivates the database schema.

Next, DB schema manager 125 queries the database schema table stored ininventory data storage 130 for deactivated database schemas with anerror date (i.e., the date on which the error occurred) that fallswithin a define range of time. DB schema manager 125 then compares thelist of errors and the deactivated database schemas with an error datethat falls within the define range of time. If an error in the list oferrors has a matching error and a matching deactivated database schema,DB schema manager 125 sends the owner of the deactivated database schemaa notification reminding the owner to fix the error. For everydeactivated database schema in the query result that does not have amatching error in the list of errors, DB schema manager 125 reactivatesthe database schema.

Then, DB schema manager 125 queries the database schema table stored ininventory data storage 130 for deactivated database schemas with anerror date (i.e., the date on which the error occurred) that falls afterthe define range of time. DB schema manager 125 compares the list oferrors and the deactivated database schemas with an error date thatfalls after the define range of time. If an error in the list of errorshas a matching error and a matching deactivated database schema, DBschema manager 125 deletes the deactivated database schema from thedatabase 140 for which the database scheme is configured and then sendsthe owner of the deleted database schema a notification indicating thatthe database schema has been deleted. In some embodiments, DB schemamanager 125 performs the delete operation via APIs provided by computingdevices used to implement DBs 140 a-n. For every deactivated databaseschema in the query result that does not have a matching error in thelist of errors, DB schema manager 125 reactivates the database schema.

FIG. 3 illustrates a process 300 for automatedly managing databaseschemas according to some embodiments. In some embodiments, computingsystem 110 performs process 300. Process 300 starts by querying, at 310,a set of databases to identify a first set of database schemas. Eachdatabase schema in the first set of database schemas is configured for adatabase in the set of databases. Referring to FIG. 1 as an example,data collector 115 may query DBs 140 a-n to identify errors associatedwith database schemas configured for DBs 140 a-n. The database schemaswith which the identified errors are associated can be the first set ofdatabase schemas.

Next, process 300 queries, at 320, an inventory data storage for asecond set of database schemas. Referring to FIG. 1 as an example, DBschema manager 125 can query the database schema table stored ininventory data storage 130 to identify every database schema that has anactive status. Then process 300 compares, at 330, the first set ofdatabase schemas and the second set of database schemas. Finally, basedon the comparison, process 300 determines, at 340, whether to deactivatedatabase schemas in the set of databases. As an example, for eachdatabase schema in the first set of database schemas that is notincluded in the second set of database schemas, process 300 deactivatesthe database schema.

FIG. 4 illustrates an exemplary computer system 400 for implementingvarious embodiments described above. For example, computer system 400may be used to implement client device 105, computing system 110, andcomputing systems used for implementing DBs 140 a-n. Computer system 400may be a desktop computer, a laptop, a server computer, or any othertype of computer system or combination thereof. Some or all elements ofdata collector 115, data merger 120, DB schema manager 125, orcombinations thereof can be included or implemented in computer system400. In addition, computer system 400 can implement many of theoperations, methods, and/or processes described above (e.g., process300). As shown in FIG. 4, computer system 400 includes processingsubsystem 402, which communicates, via bus subsystem 426, withinput/output (I/O) subsystem 408, storage subsystem 410 andcommunication subsystem 424.

Bus subsystem 426 is configured to facilitate communication among thevarious components and subsystems of computer system 400. While bussubsystem 426 is illustrated in FIG. 4 as a single bus, one of ordinaryskill in the art will understand that bus subsystem 426 may beimplemented as multiple buses. Bus subsystem 426 may be any of severaltypes of bus structures (e.g., a memory bus or memory controller, aperipheral bus, a local bus, etc.) using any of a variety of busarchitectures. Examples of bus architectures may include an IndustryStandard Architecture (ISA) bus, a Micro Channel Architecture (MCA) bus,an Enhanced ISA (EISA) bus, a Video Electronics Standards Association(VESA) local bus, a Peripheral Component Interconnect (PCI) bus, aUniversal Serial Bus (USB), etc.

Processing subsystem 402, which can be implemented as one or moreintegrated circuits (e.g., a conventional microprocessor ormicrocontroller), controls the operation of computer system 400.Processing subsystem 402 may include one or more processors 404. Eachprocessor 404 may include one processing unit 406 (e.g., a single coreprocessor such as processor 404-1) or several processing units 406(e.g., a multicore processor such as processor 404-2). In someembodiments, processors 404 of processing subsystem 402 may beimplemented as independent processors while, in other embodiments,processors 404 of processing subsystem 402 may be implemented asmultiple processors integrate into a single chip or multiple chips.Still, in some embodiments, processors 404 of processing subsystem 402may be implemented as a combination of independent processors andmultiple processors integrated into a single chip or multiple chips.

In some embodiments, processing subsystem 402 can execute a variety ofprograms or processes in response to program code and can maintainmultiple concurrently executing programs or processes. At any giventime, some or all of the program code to be executed can reside inprocessing subsystem 402 and/or in storage subsystem 410. Throughsuitable programming, processing subsystem 402 can provide variousfunctionalities, such as the functionalities described above byreference to process 300, etc.

I/O subsystem 408 may include any number of user interface input devicesand/or user interface output devices. User interface input devices mayinclude a keyboard, pointing devices (e.g., a mouse, a trackball, etc.),a touchpad, a touch screen incorporated into a display, a scroll wheel,a click wheel, a dial, a button, a switch, a keypad, audio input deviceswith voice recognition systems, microphones, image/video capture devices(e.g., webcams, image scanners, barcode readers, etc.), motion sensingdevices, gesture recognition devices, eye gesture (e.g., blinking)recognition devices, biometric input devices, and/or any other types ofinput devices.

User interface output devices may include visual output devices (e.g., adisplay subsystem, indicator lights, etc.), audio output devices (e.g.,speakers, headphones, etc.), etc. Examples of a display subsystem mayinclude a cathode ray tube (CRT), a flat-panel device (e.g., a liquidcrystal display (LCD), a plasma display, etc.), a projection device, atouch screen, and/or any other types of devices and mechanisms foroutputting information from computer system 400 to a user or anotherdevice (e.g., a printer).

As illustrated in FIG. 4, storage subsystem 410 includes system memory412, computer-readable storage medium 420, and computer-readable storagemedium reader 422. System memory 412 may be configured to store softwarein the form of program instructions that are loadable and executable byprocessing subsystem 402 as well as data generated during the executionof program instructions. In some embodiments, system memory 412 mayinclude volatile memory (e.g., random access memory (RAM)) and/ornon-volatile memory (e.g., read-only memory (ROM), programmableread-only memory (PROM), erasable programmable read-only memory (EPROM),electrically erasable programmable read-only memory (EEPROM), flashmemory, etc.). System memory 412 may include different types of memory,such as static random access memory (SRAM) and/or dynamic random accessmemory (DRAM). System memory 412 may include a basic input/output system(BIOS), in some embodiments, that is configured to store basic routinesto facilitate transferring information between elements within computersystem 400 (e.g., during start-up). Such a BIOS may be stored in ROM(e.g., a ROM chip), flash memory, or any other type of memory that maybe configured to store the BIOS.

As shown in FIG. 4, system memory 412 includes application programs 414,program data 416, and operating system (OS) 418. OS 418 may be one ofvarious versions of Microsoft Windows, Apple Mac OS, Apple OS X, ApplemacOS, and/or Linux operating systems, a variety ofcommercially-available UNIX or UNIX-like operating systems (includingwithout limitation the variety of GNU/Linux operating systems, theGoogle Chrome® OS, and the like) and/or mobile operating systems such asApple iOS, Windows Phone, Windows Mobile, Android, BlackBerry OS,Blackberry 10, and Palm OS, WebOS operating systems.

Computer-readable storage medium 420 may be a non-transitorycomputer-readable medium configured to store software (e.g., programs,code modules, data constructs, instructions, etc.). Many of thecomponents (e.g., data collector 115, data merger 120, and DB schemamanager 125) and/or processes (e.g., process 300) described above may beimplemented as software that when executed by a processor or processingunit (e.g., a processor or processing unit of processing subsystem 402)performs the operations of such components and/or processes. Storagesubsystem 410 may also store data used for, or generated during, theexecution of the software.

Storage subsystem 410 may also include computer-readable storage mediumreader 422 that is configured to communicate with computer-readablestorage medium 420. Together and, optionally, in combination with systemmemory 412, computer-readable storage medium 420 may comprehensivelyrepresent remote, local, fixed, and/or removable storage devices plusstorage media for temporarily and/or more permanently containing,storing, transmitting, and retrieving computer-readable information.

Computer-readable storage medium 420 may be any appropriate media knownor used in the art, including storage media such as volatile,non-volatile, removable, non-removable media implemented in any methodor technology for storage and/or transmission of information. Examplesof such storage media includes RAM, ROM, EEPROM, flash memory or othermemory technology, compact disc read-only memory (CD-ROM), digitalversatile disk (DVD), Blu-ray Disc (BD), magnetic cassettes, magnetictape, magnetic disk storage (e.g., hard disk drives), Zip drives,solid-state drives (SSD), flash memory card (e.g., secure digital (SD)cards, CompactFlash cards, etc.), USB flash drives, or any other type ofcomputer-readable storage media or device.

Communication subsystem 424 serves as an interface for receiving datafrom, and transmitting data to, other devices, computer systems, andnetworks. For example, communication subsystem 424 may allow computersystem 400 to connect to one or more devices via a network (e.g., apersonal area network (PAN), a local area network (LAN), a storage areanetwork (SAN), a campus area network (CAN), a metropolitan area network(MAN), a wide area network (WAN), a global area network (GAN), anintranet, the Internet, a network of any number of different types ofnetworks, etc.). Communication subsystem 424 can include any number ofdifferent communication components. Examples of such components mayinclude radio frequency (RF) transceiver components for accessingwireless voice and/or data networks (e.g., using cellular technologiessuch as 2G, 3G, 4G, 5G, etc., wireless data technologies such as Wi-Fi,Bluetooth, ZigBee, etc., or any combination thereof), global positioningsystem (GPS) receiver components, and/or other components. In someembodiments, communication subsystem 424 may provide componentsconfigured for wired communication (e.g., Ethernet) in addition to orinstead of components configured for wireless communication.

One of ordinary skill in the art will realize that the architectureshown in FIG. 4 is only an example architecture of computer system 400,and that computer system 400 may have additional or fewer componentsthan shown, or a different configuration of components. The variouscomponents shown in FIG. 4 may be implemented in hardware, software,firmware or any combination thereof, including one or more signalprocessing and/or application specific integrated circuits.

FIG. 5 illustrates an exemplary computing device 500 for implementingvarious embodiments described above. For example, computing device 500may be used to implement client device 105. Computing device 500 may bea cellphone, a smartphone, a wearable device, an activity tracker ormanager, a tablet, a personal digital assistant (PDA), a media player,or any other type of mobile computing device or combination thereof. Asshown in FIG. 5, computing device 500 includes processing system 502,input/output (I/O) system 508, communication system 518, and storagesystem 520. These components may be coupled by one or more communicationbuses or signal lines.

Processing system 502, which can be implemented as one or moreintegrated circuits (e.g., a conventional microprocessor ormicrocontroller), controls the operation of computing device 500. Asshown, processing system 502 includes one or more processors 504 andmemory 506. Processors 504 are configured to run or execute varioussoftware and/or sets of instructions stored in memory 506 to performvarious functions for computing device 500 and to process data.

Each processor of processors 504 may include one processing unit (e.g.,a single core processor) or several processing units (e.g., a multicoreprocessor). In some embodiments, processors 504 of processing system 502may be implemented as independent processors while, in otherembodiments, processors 504 of processing system 502 may be implementedas multiple processors integrate into a single chip. Still, in someembodiments, processors 504 of processing system 502 may be implementedas a combination of independent processors and multiple processorsintegrated into a single chip.

Memory 506 may be configured to receive and store software (e.g.,operating system 522, applications 524, I/O module 526, communicationmodule 528, etc. from storage system 520) in the form of programinstructions that are loadable and executable by processors 504 as wellas data generated during the execution of program instructions. In someembodiments, memory 506 may include volatile memory (e.g., random accessmemory (RAM)), non-volatile memory (e.g., read-only memory (ROM),programmable read-only memory (PROM), erasable programmable read-onlymemory (EPROM), electrically erasable programmable read-only memory(EEPROM), flash memory, etc.), or a combination thereof.

I/O system 508 is responsible for receiving input through variouscomponents and providing output through various components. As shown forthis example, I/O system 508 includes display 510, one or more sensors512, speaker 514, and microphone 516. Display 510 is configured tooutput visual information (e.g., a graphical user interface (GUI)generated and/or rendered by processors 504). In some embodiments,display 510 is a touch screen that is configured to also receivetouch-based input. Display 510 may be implemented using liquid crystaldisplay (LCD) technology, light-emitting diode (LED) technology, organicLED (OLED) technology, organic electro luminescence (OEL) technology, orany other type of display technologies. Sensors 512 may include anynumber of different types of sensors for measuring a physical quantity(e.g., temperature, force, pressure, acceleration, orientation, light,radiation, etc.). Speaker 514 is configured to output audio informationand microphone 516 is configured to receive audio input. One of ordinaryskill in the art will appreciate that I/O system 508 may include anynumber of additional, fewer, and/or different components. For instance,I/O system 508 may include a keypad or keyboard for receiving input, aport for transmitting data, receiving data and/or power, and/orcommunicating with another device or component, an image capturecomponent for capturing photos and/or videos, etc.

Communication system 518 serves as an interface for receiving data from,and transmitting data to, other devices, computer systems, and networks.For example, communication system 518 may allow computing device 500 toconnect to one or more devices via a network (e.g., a personal areanetwork (PAN), a local area network (LAN), a storage area network (SAN),a campus area network (CAN), a metropolitan area network (MAN), a widearea network (WAN), a global area network (GAN), an intranet, theInternet, a network of any number of different types of networks, etc.).Communication system 518 can include any number of differentcommunication components. Examples of such components may include radiofrequency (RF) transceiver components for accessing wireless voiceand/or data networks (e.g., using cellular technologies such as 2G, 3G,4G, 5G, etc., wireless data technologies such as Wi-Fi, Bluetooth,ZigBee, etc., or any combination thereof), global positioning system(GPS) receiver components, and/or other components. In some embodiments,communication system 518 may provide components configured for wiredcommunication (e.g., Ethernet) in addition to or instead of componentsconfigured for wireless communication.

Storage system 520 handles the storage and management of data forcomputing device 500. Storage system 520 may be implemented by one ormore non-transitory machine-readable mediums that are configured tostore software (e.g., programs, code modules, data constructs,instructions, etc.) and store data used for, or generated during, theexecution of the software.

In this example, storage system 520 includes operating system 522, oneor more applications 524, I/O module 526, and communication module 528.Operating system 522 includes various procedures, sets of instructions,software components and/or drivers for controlling and managing generalsystem tasks (e.g., memory management, storage device control, powermanagement, etc.) and facilitates communication between various hardwareand software components. Operating system 522 may be one of variousversions of Microsoft Windows, Apple Mac OS, Apple OS X, Apple macOS,and/or Linux operating systems, a variety of commercially-available UNIXor UNIX-like operating systems (including without limitation the varietyof GNU/Linux operating systems, the Google Chrome® OS, and the like)and/or mobile operating systems such as Apple iOS, Windows Phone,Windows Mobile, Android, BlackBerry OS, Blackberry 10, and Palm OS,WebOS operating systems.

Applications 524 can include any number of different applicationsinstalled on computing device 500. Examples of such applications mayinclude a browser application, an address book application, a contactlist application, an email application, an instant messagingapplication, a word processing application, JAVA-enabled applications,an encryption application, a digital rights management application, avoice recognition application, location determination application, amapping application, a music player application, etc.

I/O module 526 manages information received via input components (e.g.,display 510, sensors 512, and microphone 516) and information to beoutputted via output components (e.g., display 510 and speaker 514).Communication module 528 facilitates communication with other devicesvia communication system 518 and includes various software componentsfor handling data received from communication system 518.

One of ordinary skill in the art will realize that the architectureshown in FIG. 5 is only an example architecture of computing device 500,and that computing device 500 may have additional or fewer componentsthan shown, or a different configuration of components. The variouscomponents shown in FIG. 5 may be implemented in hardware, software,firmware or any combination thereof, including one or more signalprocessing and/or application specific integrated circuits.

FIG. 6 illustrates an exemplary system 600 for implementing variousembodiments described above. For example, one of client devices 602-608may be used to implement client device 105 and cloud computing system612 may be used to implement computing system 110. As shown, system 600includes client devices 602-608, one or more networks 610, and cloudcomputing system 612. Cloud computing system 612 is configured toprovide resources and data to client devices 602-608 via networks 610.In some embodiments, cloud computing system 600 provides resources toany number of different users (e.g., customers, tenants, organizations,etc.). Cloud computing system 612 may be implemented by one or morecomputer systems (e.g., servers), virtual machines operating on acomputer system, or a combination thereof.

As shown, cloud computing system 612 includes one or more applications614, one or more services 616, and one or more databases 618. Cloudcomputing system 600 may provide applications 614, services 616, anddatabases 618 to any number of different customers in a self-service,subscription-based, elastically scalable, reliable, highly available,and secure manner.

In some embodiments, cloud computing system 600 may be adapted toautomatically provision, manage, and track a customer's subscriptions toservices offered by cloud computing system 600. Cloud computing system600 may provide cloud services via different deployment models. Forexample, cloud services may be provided under a public cloud model inwhich cloud computing system 600 is owned by an organization sellingcloud services and the cloud services are made available to the generalpublic or different industry enterprises. As another example, cloudservices may be provided under a private cloud model in which cloudcomputing system 600 is operated solely for a single organization andmay provide cloud services for one or more entities within theorganization. The cloud services may also be provided under a communitycloud model in which cloud computing system 600 and the cloud servicesprovided by cloud computing system 600 are shared by severalorganizations in a related community. The cloud services may also beprovided under a hybrid cloud model, which is a combination of two ormore of the aforementioned different models.

In some instances, any one of applications 614, services 616, anddatabases 618 made available to client devices 602-608 via networks 610from cloud computing system 600 is referred to as a “cloud service.”Typically, servers and systems that make up cloud computing system 600are different from the on-premises servers and systems of a customer.For example, cloud computing system 600 may host an application and auser of one of client devices 602-608 may order and use the applicationvia networks 610.

Applications 614 may include software applications that are configuredto execute on cloud computing system 612 (e.g., a computer system or avirtual machine operating on a computer system) and be accessed,controlled, managed, etc. via client devices 602-608. In someembodiments, applications 614 may include server applications and/ormid-tier applications (e.g., HTTP (hypertext transport protocol) serverapplications, FTP (file transfer protocol) server applications, CGI(common gateway interface) server applications, JAVA serverapplications, etc.). Services 616 are software components, modules,application, etc. that are configured to execute on cloud computingsystem 612 and provide functionalities to client devices 602-608 vianetworks 610. Services 616 may be web-based services or on-demand cloudservices.

Databases 618 are configured to store and/or manage data that isaccessed by applications 614, services 616, and/or client devices602-608. For instance, inventory data storage 130 may be stored indatabases 618. Databases 618 may reside on a non-transitory storagemedium local to (and/or resident in) cloud computing system 612, in astorage-area network (SAN), on a non-transitory storage medium locallocated remotely from cloud computing system 612. In some embodiments,databases 618 may include relational databases that are managed by arelational database management system (RDBMS). Databases 618 may be acolumn-oriented databases, row-oriented databases, or a combinationthereof. In some embodiments, some or all of databases 618 are in-memorydatabases. That is, in some such embodiments, data for databases 618 arestored and managed in memory (e.g., random access memory (RAM)).

Client devices 602-608 are configured to execute and operate a clientapplication (e.g., a web browser, a proprietary client application,etc.) that communicates with applications 614, services 616, and/ordatabases 618 via networks 610. This way, client devices 602-608 mayaccess the various functionalities provided by applications 614,services 616, and databases 618 while applications 614, services 616,and databases 618 are operating (e.g., hosted) on cloud computing system600. Client devices 602-608 may be computer system 400 or computingdevice 500, as described above by reference to FIGS. 4 and 5,respectively. Although system 600 is shown with four client devices, anynumber of client devices may be supported.

Networks 610 may be any type of network configured to facilitate datacommunications among client devices 602-608 and cloud computing system612 using any of a variety of network protocols. Networks 610 may be apersonal area network (PAN), a local area network (LAN), a storage areanetwork (SAN), a campus area network (CAN), a metropolitan area network(MAN), a wide area network (WAN), a global area network (GAN), anintranet, the Internet, a network of any number of different types ofnetworks, etc.

The above description illustrates various embodiments of the presentinvention along with examples of how aspects of the present inventionmay be implemented. The above examples and embodiments should not bedeemed to be the only embodiments, and are presented to illustrate theflexibility and advantages of the present invention as defined by thefollowing claims. Based on the above disclosure and the followingclaims, other arrangements, embodiments, implementations and equivalentswill be evident to those skilled in the art and may be employed withoutdeparting from the spirit and scope of the invention as defined by theclaims.

What is claimed is:
 1. A non-transitory machine-readable medium storinga program executable by at least one processing unit of a device, theprogram comprising sets of instructions for: querying a set of databasesto identify a first set of database schemas, each database schema in thefirst set of database schemas configured for a database in the set ofdatabases; querying an inventory data storage for a second set ofdatabase schemas; comparing the first set of database schemas and thesecond set of database schemas; and based on the comparison, determiningwhether to deactivate database schemas in the set of databases, whereindetermining whether to deactivate database schemas in the set ofdatabases comprises, for each database schema in the first set ofdatabase schemas that is not included in the second set of databaseschemas: adding the database schema to the second set of databaseschemas stored in the inventory data storage; and preventing access tothe database schema.
 2. The non-transitory machine-readable medium ofclaim 1, wherein querying the set of databases comprises: querying eachdatabase in the set of databases; for each database in the set ofdatabases, generating a list of errors, each error in the list of errorsassociated with a database schema configured for the database; mergingthe lists of errors into a single list of errors; and using the singlelist of errors as the first set of database schemas.
 3. Thenon-transitory machine-readable medium of claim 1, wherein the programfurther comprises a set of instruction for reactivating each databaseschema in the second set of database schemas that is not included in thefirst set of database schemas.
 4. The non-transitory machine-readablemedium of claim 1, wherein the program further comprises sets ofinstructions for: receiving a request to create a database schema in adatabase in the set of databases, wherein the request includes a datasource for the database schema; in response to the request, creating thedatabase schemas in the database; and copying data from the data sourceinto the database schema.
 5. The non-transitory machine-readable mediumof claim 1, wherein each database in the set of databases comprises aset of tables, wherein a database schema configured for a database inthe set of databases includes a subset of the set of tables andspecifies the relationships among the subset of the set of tables. 6.The non-transitory machine-readable medium of claim 1, wherein eachdatabase schema in the first set of database schemas has at least oneerror stored in a table included in the database schema.
 7. Anon-transitory machine-readable medium storing a program executable byat least one processing unit of a device, the program comprising sets ofinstructions for: querying a set of databases to identify a first set ofdatabase schemas, each database schema in the first set of databaseschemas configured for a database in the set of databases; querying aninventory data storage for a second set of database schemas; comparingthe first set of database schemas and the second set of databaseschemas; and based on the comparison, determining whether to deactivatedatabase schemas in the set of databases, wherein determining whether todeactivate database schemas in the set of databases comprises, for eachdatabase schema in the first set of database schemas that is notincluded in the second set of database schemas: adding the databaseschema to the second set of database schemas stored in the inventorydata storage; and preventing access to the database schema.
 8. Themethod of claim 7, wherein querying the set of databases comprises:querying each database in the set of databases; for each database in theset of databases, generating a list of errors, each error in the list oferrors associated with a database schema configured for the database;merging the lists of errors into a single list of errors; and using thesingle list of errors as the first set of database schemas.
 9. Themethod of claim 7 further comprising reactivating each database schemain the second set of database schemas that is not included in the firstset of database schemas.
 10. The method of claim 7 further comprising:receiving a request to create a database schema in a database in the setof databases, wherein the request includes a data source for thedatabase schema; in response to the request, creating the databaseschemas in the database; and copying data from the data source into thedatabase schema.
 11. The method of claim 7, wherein each database in theset of databases comprises a set of tables, wherein a database schemaconfigured for a database in the set of databases includes a subset ofthe set of tables and specifies the relationships among the subset ofthe set of tables.
 12. The method of claim 7, wherein each databaseschema in the first set of database schemas has at least one errorstored in a table included in the database schema.
 13. A systemcomprising: a set of processing units; and a non-transitorymachine-readable medium storing instructions that when executed by atleast one processing unit in the set of processing units cause the atleast one processing unit to: query a set of databases to identify afirst set of database schemas, each database schema in the first set ofdatabase schemas configured for a database in the set of databases;query an inventory data storage for a second set of database schemas;compare the first set of database schemas and the second set of databaseschemas; and based on the comparison, determine whether to deactivatedatabase schemas in the set of databases, wherein determining whether todeactivate database schemas in the set of databases comprises, for eachdatabase schema in the first set of database schemas that is notincluded in the second set of database schemas: adding the databaseschema to the second set of database schemas stored in the inventorydata storage; and preventing access to the database schema.
 14. Thesystem of claim 13, wherein querying the set of databases comprises:querying each database in the set of databases; for each database in theset of databases, generating a list of errors, each error in the list oferrors associated with a database schema configured for the database;merging the lists of errors into a single list of errors; and using thesingle list of errors as the first set of database schemas.
 15. Thesystem of claim 13, wherein the instructions further cause the at leastone processing unit to reactivate each database schema in the second setof database schemas that is not included in the first set of databaseschemas.
 16. The system of claim 13, wherein the instructions furthercause the at least one processing unit to: receive a request to create adatabase schema in a database in the set of databases, wherein therequest includes a data source for the database schema; in response tothe request, create the database schemas in the database; and copy datafrom the data source into the database schema.
 17. The system of claim13, wherein each database in the set of databases comprises a set oftables, wherein a database schema configured for a database in the setof databases includes a subset of the set of tables and specifies therelationships among the subset of the set of tables.